Skip to main content

Company API

Overview

The Company API enables partners to manage company entities within the system. This API provides comprehensive functionality for creating companies, retrieving company information with advanced filtering capabilities, and managing company-related documents. All operations support full KYB data structures including company details, license profiles, payment profiles, financial information, and compliance data.

Authentication

All Company API endpoints require authentication using API Key credentials.

Required Headers

x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY

Both headers must be present in every request. Missing or invalid credentials will result in a 401 Unauthorized response.

Endpoints

Create Company

Creates a new company entity with full KYB information.

POST /api/companies

Request Headers

Content-Type: application/json
x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY

Request Body

The request body accepts comprehensive company information organized into multiple sections.

Core Company Fields
FieldTypeRequiredDescription
namestringYesLegal name of the company
tradingNamestringNoTrading name if different from legal name
addressAddressDTONoLegal address of the company
businessAddressAddressDTONoBusiness address if different from legal address
companyTypestringNoType of company entity
companyStatusstringNoCurrent status of the company
registrationNumberstringNoCompany registration number
countryOfIncorporationstringNoCountry where company is incorporated
dateOfIncorporationstring (ISO 8601)NoDate of incorporation
establishedYearnumberNoYear business was established
industrystringNoPrimary industry
subIndustrystringNoSub-industry classification
industryCodestringNoNACE/TOL industry code
usestringNoCompany use type
typeOtherstringNoOther company use description
numberOfEmployeesnumberNoTotal number of employees
isInGroupStructurebooleanNoWhether entity is part of a group structure
detailedDescriptionOfProductsstringNoDetailed description of products and services
sourceOfWealthstringNoDescription of source of wealth
geographicAreasstring[]NoGeographic areas of operation
geographicAreaOtherstringNoOther geographic areas specification
isDormancybooleanNoWhether there have been periods of dormancy
dormancyStartDatestring (ISO 8601)NoStart date of dormancy period
dormancyEndDatestring (ISO 8601)NoEnd date of dormancy period
serviceNumberstring[]NoService numbers
Address DTO
interface AddressDTO {
addressLine1?: string;
addressLine2?: string;
city?: string;
country?: string;
postCode?: string;
}
Contact Details
interface ContactDetailsDTO {
corporateWebsite?: string;
generalEmail?: string;
invoiceEmail?: string;
telegram?: string;
skype?: string;
telephone?: string;
customerLanguageSupport?: string[];
other?: string;
}
FieldTypeDescription
contactDetailsContactDetailsDTOContact information for the company
socialProfilesSocialProfileDTO[]Array of social media profiles
customerSupportContactstringCustomer support contact information
customerSupportHoursstringCustomer support hours
contactPersonNamestringContact person name
License Profile
interface LicenseProfileDTO {
isEntityObligatedToHaveLicense?: string;
licenseInformations?: LicenseInformationDTO[];
}

interface LicenseInformationDTO {
natureOfTheLicense?: string;
countryOfIssue?: string;
nameOfTheIssuer?: string;
licenseNumber?: string;
licenseApprovalStartDate?: string;
licenseExpiration?: string;
urlLicensedPlatform?: string;
countryLicenseAllowToOperate?: string[];
countryBannedByLicense?: string[];
nameEgamingRegulatoryAuthority?: string;
legalGeos?: string;
businessGeos?: string;
servicesLicenseAllow?: string;
isLicenseRevoked?: string;
isLicenseFined?: string;
isMaterialRegulatoryFindings?: string;
brands?: BrandDTO[];
}

interface BrandDTO {
gamingWebsite?: string;
countries?: string[];
login?: string;
password?: string;
ipWhiteList?: string;
gamingOperationLiveFor?: string;
}
Payment Profile
interface CashierInformationDTO {
useACashier?: string;
whichCashier?: string;
havePciDss?: string;
ipAddress?: string;
}

interface CurrentPaymentsInformationDTO {
chargebacks?: number;
chargesbackRatio?: number;
chargebackVolume?: number;
chargebackNotificationEmail?: string;
refundsVolume?: number;
numberOfRefunds?: number;
alternativePaymentMethods?: string[];
currentCardTypes?: string[];
requiredCardType?: string[];
currentlyUsingCard?: string[];
currentProcessingCurrency?: string[];
desiredProcessingCurrency?: string[];
desiredSettlementCurrency?: string[];
otherPaymentMethods?: string;
cardTransaction?: string;
cardHolderData?: string;
}

interface PaymentOperationsDTO {
typeOfTechnicalIntegration?: string[];
paymentTypesCurrentlyOffered?: string[];
customerCharged?: string[];
transactionTypeRequired?: string[];
emailReceipt?: string;
fulfilOrders?: string;
affiliateProgrammes?: string;
affiliateProgrammesDetails?: string;
emailForRiskNotifications?: string;
}

interface TechnicalInformationDTO {
implementPreventiveControls?: string;
excludeUsResidentsAndUsCitizens?: string;
acceptPrepaidCards?: string;
technologiesForOnlineGambling?: string;
nameTestingAgency?: string;
addressTestingAgency?: string;
acceptClientsUseVpn?: string;
storeIpAddresses?: string;
}
Financial Profile
interface BankInformationDTO {
isBeneficiaryNameSameAsCompany?: boolean;
beneficiaryName?: string;
bankName?: string;
iban?: string;
swiftCode?: string;
companyBankInformationRegistrationNumber?: string;
companyBankInformationAddressLine1?: string;
companyBankInformationAddressLine2?: string;
bankType?: string;
otherBankType?: string;
bankAccountPriority?: number;
}

interface BankAccountInformationDTO {
bankUse?: string[];
baseCurrency?: string[];
additionalCurrency?: string[];
turnoverEstimatedMonthly?: number;
estimatedMonthlyTransaction?: number;
minTransactionAmount?: number;
maxTransactionAmount?: number;
countriesFundsSentTo?: string[];
countriesFundsReceive?: string[];
blockedCountries?: string[];
}

interface CryptoInformationDTO {
wallets?: CryptoWalletDTO[];
}

interface CryptoWalletDTO {
walletAddress?: string;
cryptoType?: string;
}
FieldTypeDescription
vatNumberstringVAT registration number
taxNumberstringTax identification number
bankInformationBankInformationDTO[]Array of bank account information
bankAccountInformationBankAccountInformationDTOBank account related information
cryptoInformationCryptoInformationDTOCryptocurrency wallet information
AML and Compliance Profile
interface ComplianceInformationDTO {
fraudPreventionTools?: string;
verifyIdentityCustomer?: string;
verifyFieldsName?: string;
identityDocumentAccepted?: string;
identityDocumentOther?: string;
verifyFieldsSurname?: string;
verifyFieldsBirthDate?: string;
verifyFieldsNationality?: string;
verifyFieldsResidence?: string;
verifyAddressCustomer?: string;
proofOfAddressAccepted?: string;
proofOfAddressAcceptedOther?: string;
estimationOfMonthlyTurnover?: string;
annualTurnover?: string;
annualTurnoverThreeYears?: string;
percentageReturnToPlayer?: string;
fraudPreventionTechniques?: string;
betAmountBelowIdentityOfCustomerIsNotRequested?: string;
betAmountBelowIdentityOfCustomerIsNotRequestedAmount?: string;
jurisdictionSubjectOnlineGamingSector?: string;
nameOfTheMoneyLaunderingControlAuthority?: string;
addressOfTheMoneyLaunderingControlAuthority?: string;
programSetsAmlCftAndSanctionsStandards?: string;
useThirdPartiesToCarryOut?: string;
useThirdPartiesToCarryOutDetail?: string;
companyMlroId?: string;
companyMlroName?: string;
companyMlroSurname?: string;
companyMlroEmail?: string;
complianceOfficerId?: string;
complianceOfficerName?: string;
complianceOfficerSurname?: string;
complianceOfficerEmail?: string;
}

Request Example

{
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"dateOfIncorporation": "2020-01-15",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"numberOfEmployees": 50,
"address": {
"addressLine1": "123 Business Street",
"city": "Valletta",
"country": "Malta",
"postCode": "VLT 1234"
},
"contactDetails": {
"corporateWebsite": "https://example-gaming.com",
"generalEmail": "info@example-gaming.com",
"telephone": "+356 1234 5678"
},
"licenseProfile": {
"isEntityObligatedToHaveLicense": "Yes",
"licenseInformations": [
{
"natureOfTheLicense": "B2C Gaming License",
"countryOfIssue": "Malta",
"nameOfTheIssuer": "Malta Gaming Authority",
"licenseNumber": "MGA/B2C/123/2020",
"licenseApprovalStartDate": "2020-02-01",
"licenseExpiration": "2025-02-01"
}
]
},
"bankInformation": [
{
"isBeneficiaryNameSameAsCompany": true,
"bankName": "Example Bank",
"iban": "MT12BANK12345678901234567890",
"swiftCode": "BANKMT22",
"bankType": "Corporate"
}
],
"vatNumber": "MT12345678",
"taxNumber": "12345678"
}

Response

{
"statusCode": 201,
"data": {
"_id": "68d377b43f9dd9524d312c1c",
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"dateOfIncorporation": "2020-01-15T00:00:00.000Z",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"numberOfEmployees": 50,
"address": {
"addressLine1": "123 Business Street",
"city": "Valletta",
"country": "Malta",
"postCode": "VLT 1234"
},
"contactDetails": {
"corporateWebsite": "https://example-gaming.com",
"generalEmail": "info@example-gaming.com",
"telephone": "+356 1234 5678"
},
"licenseProfile": {
"isEntityObligatedToHaveLicense": "Yes",
"licenseInformations": [
{
"natureOfTheLicense": "B2C Gaming License",
"countryOfIssue": "Malta",
"nameOfTheIssuer": "Malta Gaming Authority",
"licenseNumber": "MGA/B2C/123/2020",
"licenseApprovalStartDate": "2020-02-01T00:00:00.000Z",
"licenseExpiration": "2025-02-01T00:00:00.000Z"
}
]
},
"bankInformation": [
{
"isBeneficiaryNameSameAsCompany": true,
"bankName": "Example Bank",
"iban": "MT12BANK12345678901234567890",
"swiftCode": "BANKMT22",
"bankType": "Corporate"
}
],
"vatNumber": "MT12345678",
"taxNumber": "12345678",
"organizationId": "68d3ad818d15e761ce20d439",
"createdAt": "2025-03-15T10:30:00.000Z",
"updatedAt": "2025-03-15T10:30:00.000Z"
}
}

Response Fields

FieldTypeDescription
statusCodenumberHTTP status code
dataCompanyResponseDtoCreated company object with all submitted fields plus system-generated fields

Get Companies

Retrieves a paginated list of companies with advanced filtering and search capabilities.

GET /api/companies

Request Headers

x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY

Query Parameters

ParameterTypeRequiredDescription
searchstringNoSearch term to filter companies by name, trading name, or registration number
companyTypestringNoFilter by company type
countryOfIncorporationstringNoFilter by country of incorporation
companyStatusstringNoFilter by company status
industrystringNoFilter by industry
sortBystringNoField to sort by (default: createdAt)
sortOrderstringNoSort direction: asc or desc (default: desc)
pagenumberNoPage number for pagination (default: 1)
limitnumberNoNumber of items per page (default: 10)

Request Example

GET /api/companies?search=Gaming&companyStatus=Active&page=1&limit=20&sortBy=name&sortOrder=asc

Response

{
"statusCode": 200,
"data": {
"items": [
{
"_id": "68d377b43f9dd9524d312c1c",
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"createdAt": "2025-03-15T10:30:00.000Z",
"updatedAt": "2025-03-15T10:30:00.000Z"
}
],
"total": 1,
"page": 1,
"limit": 20,
"totalPages": 1
}
}

Response Structure

interface CompaniesListResponseDto {
statusCode: number;
data: {
items: CompanyResponseDto[];
total: number;
page: number;
limit: number;
totalPages: number;
};
}
FieldTypeDescription
statusCodenumberHTTP status code
data.itemsCompanyResponseDto[]Array of company objects matching the filters
data.totalnumberTotal number of companies matching the query
data.pagenumberCurrent page number
data.limitnumberNumber of items per page
data.totalPagesnumberTotal number of pages available

Get Company by ID

Retrieves detailed information for a specific company.

GET /api/companies/{id}

Replace \{id\} with the actual company ID.

Request Headers

x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY

Request Example

GET /api/companies/68d377b43f9dd9524d312c1c

Response

{
"statusCode": 200,
"data": {
"_id": "68d377b43f9dd9524d312c1c",
"name": "Example Gaming Ltd",
"tradingName": "Example Gaming",
"registrationNumber": "12345678",
"countryOfIncorporation": "Malta",
"dateOfIncorporation": "2020-01-15T00:00:00.000Z",
"companyType": "Limited Company",
"companyStatus": "Active",
"industry": "Online Gaming",
"subIndustry": "Casino Gaming",
"numberOfEmployees": 50,
"address": {
"addressLine1": "123 Business Street",
"city": "Valletta",
"country": "Malta",
"postCode": "VLT 1234"
},
"businessAddress": {
"addressLine1": "456 Office Avenue",
"city": "Sliema",
"country": "Malta",
"postCode": "SLM 5678"
},
"contactDetails": {
"corporateWebsite": "https://example-gaming.com",
"generalEmail": "info@example-gaming.com",
"invoiceEmail": "invoices@example-gaming.com",
"telephone": "+356 1234 5678"
},
"socialProfiles": [
{
"socialMediaType": "LinkedIn",
"socialProfile": "example-gaming"
}
],
"licenseProfile": {
"isEntityObligatedToHaveLicense": "Yes",
"licenseInformations": [
{
"natureOfTheLicense": "B2C Gaming License",
"countryOfIssue": "Malta",
"nameOfTheIssuer": "Malta Gaming Authority",
"licenseNumber": "MGA/B2C/123/2020",
"licenseApprovalStartDate": "2020-02-01T00:00:00.000Z",
"licenseExpiration": "2025-02-01T00:00:00.000Z",
"countryLicenseAllowToOperate": ["Malta", "Germany", "Spain"],
"brands": [
{
"gamingWebsite": "https://example-casino.com",
"countries": ["Malta", "Germany"],
"gamingOperationLiveFor": "3 years"
}
]
}
]
},
"cashierInformation": {
"useACashier": "Yes",
"whichCashier": "Example Payment Provider",
"havePciDss": "Yes"
},
"currentPaymentsInformation": {
"chargebacks": 5,
"chargesbackRatio": 0.2,
"currentCardTypes": ["Visa", "Mastercard"],
"currentProcessingCurrency": ["EUR", "USD"]
},
"paymentOperations": {
"typeOfTechnicalIntegration": ["API"],
"paymentTypesCurrentlyOffered": ["Credit Card", "E-Wallet"],
"emailReceipt": "Yes"
},
"technicalInformation": {
"implementPreventiveControls": "Yes",
"excludeUsResidentsAndUsCitizens": "Yes",
"storeIpAddresses": "Yes"
},
"bankInformation": [
{
"isBeneficiaryNameSameAsCompany": true,
"bankName": "Example Bank",
"iban": "MT12BANK12345678901234567890",
"swiftCode": "BANKMT22",
"bankType": "Corporate",
"bankAccountPriority": 1
}
],
"bankAccountInformation": {
"bankUse": ["Operational"],
"baseCurrency": ["EUR"],
"turnoverEstimatedMonthly": 500000,
"estimatedMonthlyTransaction": 10000
},
"cryptoInformation": {
"wallets": [
{
"walletAddress": "0x1234567890abcdef",
"cryptoType": "Bitcoin"
}
]
},
"vatNumber": "MT12345678",
"taxNumber": "12345678",
"complianceInformation": {
"verifyIdentityCustomer": "Yes",
"verifyAddressCustomer": "Yes",
"fraudPreventionTools": "Example Fraud Detection System",
"companyMlroName": "John",
"companyMlroSurname": "Doe",
"companyMlroEmail": "mlro@example-gaming.com"
},
"organizationId": "68d3ad818d15e761ce20d439",
"createdAt": "2025-03-15T10:30:00.000Z",
"updatedAt": "2025-03-15T10:30:00.000Z"
}
}

Response Structure

interface CompanyResponseDto {
statusCode: number;
data: {
_id: string;
name: string;
tradingName?: string;
registrationNumber?: string;
countryOfIncorporation?: string;
dateOfIncorporation?: string;
establishedYear?: number;
companyType?: string;
companyStatus?: string;
industry?: string;
subIndustry?: string;
industryCode?: string;
use?: string;
typeOther?: string;
numberOfEmployees?: number;
isInGroupStructure?: boolean;
detailedDescriptionOfProducts?: string;
sourceOfWealth?: string;
geographicAreas?: string[];
geographicAreaOther?: string;
isDormancy?: boolean;
dormancyStartDate?: string;
dormancyEndDate?: string;
serviceNumber?: string[];
address?: AddressDTO;
businessAddress?: AddressDTO;
contactDetails?: ContactDetailsDTO;
socialProfiles?: SocialProfileDTO[];
customerSupportContact?: string;
customerSupportHours?: string;
contactPersonName?: string;
licenseProfile?: LicenseProfileDTO;
cashierInformation?: CashierInformationDTO;
currentPaymentsInformation?: CurrentPaymentsInformationDTO;
paymentOperations?: PaymentOperationsDTO;
technicalInformation?: TechnicalInformationDTO;
bankInformation?: BankInformationDTO[];
bankAccountInformation?: BankAccountInformationDTO;
cryptoInformation?: CryptoInformationDTO;
vatNumber?: string;
taxNumber?: string;
complianceInformation?: ComplianceInformationDTO;
organizationId: string;
createdAt: string;
updatedAt: string;
};
}

Get Company Documents

Retrieves all documents associated with a specific company, organized by document type.

GET /api/companies/{id}/documents

Replace \{id\} with the actual company ID.

Request Headers

x-app-id: YOUR_ORGANIZATION_ID
X-API-Key: YOUR_API_KEY

Request Example

GET /api/companies/68d377b43f9dd9524d312c1c/documents

Response

{
"statusCode": 200,
"data": {
"documents": [
{
"documentField": "certificateOfIncorporation",
"documentLabel": "Certificate of Incorporation - English",
"files": [
{
"_id": "68d3ad818d15e761ce20d440",
"name": "certificate_of_incorporation.pdf",
"extension": "pdf",
"size": 245678,
"url": "https://storage.example.com/documents/certificate_of_incorporation.pdf",
"uploadedAt": "2025-03-15T10:35:00.000Z"
}
],
"folder": {
"_id": "68d3ad818d15e761ce20d441",
"name": "Certificate of Incorporation",
"path": "/companies/68d377b43f9dd9524d312c1c/certificateOfIncorporation"
}
},
{
"documentField": "memorandumAndArticlesOfAssociation",
"documentLabel": "Memorandum and Articles of Association - English",
"files": [
{
"_id": "68d3ad818d15e761ce20d442",
"name": "articles_of_association.pdf",
"extension": "pdf",
"size": 512345,
"url": "https://storage.example.com/documents/articles_of_association.pdf",
"uploadedAt": "2025-03-15T10:36:00.000Z"
}
],
"folder": {
"_id": "68d3ad818d15e761ce20d443",
"name": "Memorandum and Articles of Association",
"path": "/companies/68d377b43f9dd9524d312c1c/memorandumAndArticlesOfAssociation"
}
},
{
"documentField": "bankStatement",
"documentLabel": "Bank Statement",
"files": [
{
"_id": "68d3ad818d15e761ce20d444",
"name": "bank_statement_march_2025.pdf",
"extension": "pdf",
"size": 189456,
"url": "https://storage.example.com/documents/bank_statement_march_2025.pdf",
"uploadedAt": "2025-03-15T10:37:00.000Z"
},
{
"_id": "68d3ad818d15e761ce20d445",
"name": "bank_statement_february_2025.pdf",
"extension": "pdf",
"size": 175234,
"url": "https://storage.example.com/documents/bank_statement_february_2025.pdf",
"uploadedAt": "2025-03-15T10:38:00.000Z"
}
],
"folder": {
"_id": "68d3ad818d15e761ce20d446",
"name": "Bank Statement",
"path": "/companies/68d377b43f9dd9524d312c1c/bankStatement"
}
}
]
}
}

Response Structure

interface CompanyDocumentsResponseDto {
statusCode: number;
data: {
documents: DocumentGroupDto[];
};
}

interface DocumentGroupDto {
documentField: string;
documentLabel: string;
files: DocumentFileDto[];
folder: FolderDetailsDto;
}

interface DocumentFileDto {
_id: string;
name: string;
extension: string;
size: number;
url: string;
uploadedAt: string;
}

interface FolderDetailsDto {
_id: string;
name: string;
path: string;
}
FieldTypeDescription
statusCodenumberHTTP status code
data.documentsDocumentGroupDto[]Array of document groups, each representing a document type
documentFieldstringInternal field identifier for the document type
documentLabelstringHuman-readable label for the document type
filesDocumentFileDto[]Array of files uploaded for this document type
folderFolderDetailsDtoFolder information where documents are stored

Supported Document Types

The following document types are supported for companies:

  • Certificate of Incorporation
  • Memorandum and Articles of Association
  • Certificate of Registered Offices
  • Certificate of Director and Secretary
  • Certificate of Shareholder
  • VAT Certificate
  • Certificate of Incumbency
  • Company Structure
  • Bank Statement
  • Business Plan
  • Business License
  • Company Share Registry
  • AML and Operation Policies
  • AML Responsible Gaming
  • Terms and Conditions
  • KYC Policy
  • Financial Statements
  • Certificate of Good Standing
  • License Certificate
  • Additional Documents

Error Responses

401 Unauthorized

Returned when authentication credentials are missing or invalid.

{
"statusCode": 401,
"message": "Unauthorized",
"error": "Invalid API credentials"
}

404 Not Found

Returned when the requested company does not exist.

{
"statusCode": 404,
"message": "Company not found",
"error": "Not Found"
}

400 Bad Request

Returned when the request body contains invalid data.

{
"statusCode": 400,
"message": ["name must be a string", "name should not be empty"],
"error": "Bad Request"
}

500 Internal Server Error

Returned when an unexpected error occurs on the server.

{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error"
}

Usage Notes

  1. All endpoints require valid API credentials in the request headers.
  2. Company creation validates that required fields are provided and properly formatted.
  3. Dates should be provided in ISO 8601 format (YYYY-MM-DD or full ISO timestamp).
  4. Array fields accept multiple values where applicable.
  5. The search parameter in GET /api/companies searches across company name, trading name, and registration number fields.
  6. Pagination is 1-indexed, with page 1 being the first page.
  7. Default sorting is by creation date in descending order (newest first).
  8. Document URLs are temporary and should be accessed within the validity period.
  9. Some fields are interdependent. For example, if isDormancy is true, dormancyStartDate and dormancyEndDate should be provided.
  10. The system automatically creates folder structures for document storage when a company is created.